package main

import (
	"fmt"
	"strings"
)

/*
 * Escribe un programa que reciba un texto y transforme lenguaje natural a
 * "lenguaje hacker" (conocido realmente como "leet" o "1337"). Este lenguaje
 *  se caracteriza por sustituir caracteres alfanuméricos.
 * - Utiliza esta tabla (https://www.gamehouse.com/blog/leet-speak-cheat-sheet/)
 *   con el alfabeto y los números en "leet".
 *   (Usa la primera opción de cada transformación. Por ejemplo "4" para la "a")
 */

var alpfabeto map[string]string = map[string]string{"a": "4", "b": "I3", "c": "[", "d": ")", "e": "3", "f": "|=", "g": "&", "h": "#", "i": "1", "j": ",_|", "k": ">|", "l": "1", "m": "/\\/\\", "n": "^/", "o": "0", "p": "|*", "q": "(_,)", "r": "I2", "s": "5", "t": "7", "u": "(_)", "v": "\\/", "w": "\\/\\/", "x": "><", "y": "j", "z": "2", "1": "L", "2": "R", "3": "E", "4": "A", "5": "S", "6": "b", "7": "T", "8": "B", "9": "g", "0": "o"}

func convertirLeet(text string) string {

	textoLower := strings.ToLower(text)
	letras := strings.Split(textoLower, "")

	var textoLeet []string

	for _, letra := range letras {
		convert, encontrado := alpfabeto[letra]

		if encontrado {
			textoLeet = append(textoLeet, convert)
		} else {
			textoLeet = append(textoLeet, letra)
		}
	}

	return strings.Join(textoLeet, "")
}

func main() {
	textoLeet := convertirLeet("Hello World")
	fmt.Println(textoLeet)
}
